package array;

import java.util.Arrays;

/**
 * @author lj
 * @date 2021/12/29 16:37
 * @email milolj@foxmail.com
 */
public class LeetCode_array3 {
    /**
     * 给你一个数组，将数组中的元素向右轮转 k 个位置，其中 k 是非负数。
     *输入: nums = [1,2,3,4,5,6,7], k = 3
     * 输出: [5,6,7,1,2,3,4]
     * 解释:
     * 向右轮转 1 步: [7,1,2,3,4,5,6]
     * 向右轮转 2 步: [6,7,1,2,3,4,5]
     * 向右轮转 3 步: [5,6,7,1,2,3,4]
     *
     * 作者：力扣 (LeetCode)
     * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2skh7/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */
    public static void main(String[] args) {
        int[] array1 = new int[]{7,1,5,3,6,4};
        LeetCode_array3 leetCode_array1 = new LeetCode_array3();
        leetCode_array1.rotate(array1,1);
    }

    public void rotate(int[] nums, int k) {
        int range;
        int [] newArray ;

            range = k> nums.length?k % nums.length:k;
            // 创建一个 需要移动大小的数组，然后从后往前移动
            newArray = new int[range];
        System.arraycopy(nums, nums.length - range, newArray, 0, newArray.length);
        System.out.println(Arrays.toString(newArray));

        for (int i = nums.length -1; i >= 0; i--) {
            if (i >= range) {
                nums[i] = nums[i-range];
                System.out.println("当前的i"+i);
            } else{
                nums[i] = newArray[i];
            }
        }

        System.out.println(Arrays.toString(nums));
    }

}
